package com.zhumo.sz.mock;

import com.zhumo.sz.entity.bike.SharedBikeOrderDetail;
import com.zhumo.sz.entity.subway.SubwayGateSwipeDetail;
import lombok.extern.slf4j.Slf4j;

import java.math.BigDecimal;
import java.util.Random;

/**
 * @author jiaqi.zhu
 * @time 2024-03-15
 * @comment 生成流量
 */
@Slf4j
public class TrafficMocker {

    /**
     * 系统支持的线程核数
     */
    private static final int DEFAULT_THREAD_COUNT = 4;

    /**
     * 交通系统 价格计算
     *
     * @param rideTimeInSeconds
     * @return
     */
    public static BigDecimal calculateFare(long rideTimeInSeconds) {
        double rideTimeInMinutes = rideTimeInSeconds / 60.0; // 将乘坐时间转换为分钟

        if (rideTimeInMinutes < 20) {
            return BigDecimal.valueOf(2.0); // 如果乘坐时间小于 20分钟，则收费2元
        } else if (rideTimeInMinutes >= 20 && rideTimeInMinutes <= 60) {
            return BigDecimal.valueOf(4.0); // 如果乘坐时间在20-60分钟之间，则收费4元
        } else {
            return BigDecimal.valueOf(6.0); // 否则，收费6元
        }
    }

    /**
     * 交通平台 定义残疾人
     * 年龄定义 50 岁 一下  十万分之一 50岁以上 万分之一
     */
    public static boolean isDeformed(boolean old) {
        Random random = new Random();
        if (!old) {
            return random.nextInt(100000) == 0; // 返回 true 的概率为十万分之一
        } else {
            return random.nextInt(10000) == 0; // 返回 true 的概率为万分之一
        }
    }

    /**
     * 平台套餐参加定义 6 / 4 分成
     */
    public static boolean isAppActActive() {
        int i = new Random().nextInt(100);
        return i < 50;
    }

    /**
     * 电子票和线下门票定义
     */
    public static boolean isTicketOnline() {
        int tag = new Random().nextInt(10000);
        return tag > 10;
    }

    /**
     * 是否使用深圳通App
     */
    public static boolean isSZTUser() {
        int tag = new Random().nextInt(10000);
        return tag < 5000;
    }

    /**
     * 获取线下购票支付方式
     */
    public static String getOfflinePaymentType(boolean isBus) {
        int tag = new Random().nextInt(1000);
        if (isBus) {
            if (tag < 100) {
                return "现金";
            } else if (tag > 100 && tag < 600) {
                return "微信";
            } else {
                return "支付宝";
            }
        } else {
            if (tag > 500) {
                return "微信";
            } else {
                return "支付宝";
            }
        }
    }

    public static String getOnlinePaymentType() {
        int tag = new Random().nextInt(1000);
        if (tag > 500) {
            return "微信";
        } else {
            return "支付宝";
        }
    }

    /**
     * 生成支付宝活动编码 活动不一定减免金额 可能是积分活动
     */
    public static Integer getAliPayActiveCode() {
        int tag = new Random().nextInt(100);
        if (tag < 50 ) {
            return 1;
        }else {
            return 2;
        }
    }

    /**
     * 清楚地铁未支付流量订单相关属性
     */
    public static void clearUnPaymentOrder(SubwayGateSwipeDetail subwayPayment){
        int tag = new Random().nextInt(100000);
        if (tag < 20){
            subwayPayment.setPaymentType(null);
            String ticketType = subwayPayment.getTicketType();
            subwayPayment.setPaymentTime(null);
            subwayPayment.setPaymentSerialNumber(null);
        }
    }

    /**
     * 清除 共享单车未支付 订单相关属性
     */
    public static void clearUnPaymentBikeOrder(SharedBikeOrderDetail sharedBikeOrderDetail){
        int tag = new Random().nextInt(10000);
        if (tag < 20){
            sharedBikeOrderDetail.setPaymentTime(null);
            sharedBikeOrderDetail.setPaymentType(null);
            sharedBikeOrderDetail.setSerialNumber(null);
        }
    }

    /**
     * 设置 企业编号
     */
    public static int setCom(){
        int tag = new Random().nextInt(1000);
        if (tag < 300){
            return 1;
        }else if (tag < 700){
            return 2;
        }else {
            return 3;
        }
    }

    /**
     * 判断bike活动
     * @return
     */
    public static boolean isBikeInActive(){
        int tag = new Random().nextInt(1000);
        return tag < 300;
    }

    /**
     * 判断上行或下行
     */

    public static boolean isBusCityUpper(){
        int tag = new Random().nextInt(100);
        return tag < 50;
    }

    /**
     * 判断是否经过红绿灯
     */

    public static boolean isLight(){
        int tag = new Random().nextInt(10000);
        return tag < 6000;
    }


    public static void mockBus() {

    }


}
